#!/bin/bash

# Django项目启动脚本
# 用于清理环境、创建数据库、运行迁移并启动服务器

# 设置颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 脚本目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"

echo -e "${BLUE}🚀 Django项目启动脚本${NC}"
echo "项目目录: $PROJECT_DIR"
echo "================================"

# 1. 生成requirements.txt
echo -e "${YELLOW}1. 生成依赖文件${NC}"
pip freeze > "$PROJECT_DIR/requirements.txt"
echo -e "${GREEN}✅ requirements.txt 已生成${NC}"
echo ""

# 2. 运行缓存清理
echo -e "${YELLOW}2. 清理缓存${NC}"
if bash clear_cache_quick.sh; then
    echo -e "${GREEN}✅ 缓存清理完成${NC}"
else
    echo -e "${RED}❌ 缓存清理失败${NC}"
fi
echo ""

# 3. 删除日志和缓存文件
echo -e "${YELLOW}3. 清理日志和缓存文件${NC}"
find "$PROJECT_DIR" -type f -name "*.log" -delete 2>/dev/null
find "$PROJECT_DIR" -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null
find "$PROJECT_DIR" -type d -name ".idea" -exec rm -rf {} + 2>/dev/null
echo -e "${GREEN}✅ 日志和缓存文件已清理${NC}"
echo ""

# 4. 删除 migrations 文件
echo -e "${YELLOW}4. 清理迁移文件${NC}"
APP_DIR="$PROJECT_DIR/fs_admin/apps"
# 清理 .py 迁移文件（保留 __init__.py）
find "$APP_DIR" -type f -path "*/migrations/*.py" -not -name "__init__.py" -delete 2>/dev/null
# 清理编译后的 .pyc 文件
find "$APP_DIR" -type f -path "*/migrations/*.pyc" -delete 2>/dev/null
echo -e "${GREEN}✅ 迁移文件已清理${NC}"
echo ""

# 5. 读取环境配置
echo -e "${YELLOW}5. 读取环境配置${NC}"
ENV_FILE="$PROJECT_DIR/.env"
if [ -f "$ENV_FILE" ]; then
    DB_NAME=$(grep DB_NAME "$ENV_FILE" | cut -d '=' -f2)
    DB_USER=$(grep DB_USER "$ENV_FILE" | cut -d '=' -f2)
    DB_PASSWORD=$(grep DB_PASSWORD "$ENV_FILE" | cut -d '=' -f2)
    echo -e "${GREEN}✅ 数据库名称: ${DB_NAME}${NC}"
    echo -e "${GREEN}✅ 数据库用户: ${DB_USER}${NC}"
    echo -e "${GREEN}✅ 数据库密码: ****${NC}"
else
    echo -e "${RED}❌ 找不到 .env 文件${NC}"
    echo -e "${BLUE}💡 请创建 .env 文件并设置 DB_NAME, DB_USER, DB_PASSWORD${NC}"
    exit 1
fi
echo ""

# 6. 数据库操作
echo -e "${YELLOW}6. 数据库操作${NC}"
# 删除已存在的数据库
echo -e "${BLUE}   正在删除数据库 ${DB_NAME}...${NC}"
if mysql -u"${DB_USER}" -p"${DB_PASSWORD}" -e "DROP DATABASE IF EXISTS ${DB_NAME};" 2>/dev/null; then
    echo -e "${GREEN}   ✅ 已删除旧数据库${NC}"
else
    echo -e "${RED}   ❌ 删除数据库失败${NC}"
    exit 1
fi

# 创建新数据库
echo -e "${BLUE}   正在创建数据库 ${DB_NAME}...${NC}"
if mysql -u"${DB_USER}" -p"${DB_PASSWORD}" -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null; then
    echo -e "${GREEN}   ✅ 数据库创建成功${NC}"
else
    echo -e "${RED}   ❌ 数据库创建失败${NC}"
    exit 1
fi
echo ""

# 7. 数据库迁移
echo -e "${YELLOW}7. 数据库迁移${NC}"
cd "$PROJECT_DIR" || exit 1

echo -e "${BLUE}   正在创建迁移文件...${NC}"
if python manage.py makemigrations; then
    echo -e "${GREEN}   ✅ 迁移文件创建成功${NC}"
else
    echo -e "${RED}   ❌ 迁移文件创建失败${NC}"
    exit 1
fi

echo -e "${BLUE}   正在应用迁移...${NC}"
if python manage.py migrate; then
    echo -e "${GREEN}   ✅ 数据库迁移完成${NC}"
else
    echo -e "${RED}   ❌ 数据库迁移失败${NC}"
    exit 1
fi
echo ""

# 8. 创建超级用户
echo -e "${YELLOW}8. 创建超级用户${NC}"
echo -e "${BLUE}💡 请按照提示创建超级用户账户${NC}"
if python manage.py createsuperuser; then
    echo -e "${GREEN}✅ 超级用户创建成功${NC}"
else
    echo -e "${RED}❌ 超级用户创建失败${NC}"
    exit 1
fi
echo ""

# 9. 收集静态文件
echo -e "${YELLOW}9. 收集静态文件${NC}"
if python manage.py collectstatic --noinput; then
    echo -e "${GREEN}✅ 静态文件收集完成${NC}"
else
    echo -e "${RED}❌ 静态文件收集失败${NC}"
    exit 1
fi
echo ""

echo -e "${GREEN}🎉 项目初始化完成！${NC}"
echo "================================"

# 10. 启动服务器
echo -e "${YELLOW}10. 启动开发服务器${NC}"
echo -e "${BLUE}💡 服务器将在 http://0.0.0.0:8000 启动${NC}"
echo -e "${BLUE}💡 按 Ctrl+C 停止服务器${NC}"
echo ""
python manage.py runserver 0.0.0.0:8000
